package leetcode_1000;

/**
 *@author 周杨
 *LongestTurbulentSubarray_978 一个数组 如果一个子数组里没有超过长度为2的递增子数组 就认为是turbulent数组 问最长的这种数组是多少长度
 *describe:常规题目 两个变量记录即可
 *2019年3月19日 下午23:05
 */
public class LongestTurbulentSubarray_978 {
	
	public static void main(String[] args) {
		LongestTurbulentSubarray_978 test = new LongestTurbulentSubarray_978();
		int res =  test.maxTurbulenceSize(new int[] {9,4,2,10,7,8,8,1,9});
		System.out.println(res);
		res =  test.maxTurbulenceSize(new int[] {0,1,1,0,1,0,1,1,0,0});
		System.out.println(res);
	}
	//[0,1,1,0,1,0,1,1,0,0] 奇数小右 偶数大右
	//[9,4,2,10,7,8,8,1,9]
	public int maxTurbulenceSize(int[] A) {
        int max1 = 1,max2 = 1;
        boolean flag = false;//false是指奇数
        int pre1 = 1,pre2 = 1;
        for(int i=1;i<A.length;++i) {
        	if(flag) {//偶数 
        		if(A[i] > A[i-1]) {
        			++pre1;
        			max1 = Math.max(max1, pre1);
        			pre2 = 1;
        		}else if(A[i] < A[i-1]){
        			pre1 = 1;
        			++pre2;
        			max2 =Math.max(pre2, max2);
        		}else {
        			pre1 = 1;
        			pre2 = 1;
        		}
        	}else {
        		if(A[i] < A[i-1]) {
        			++pre1;
        			max1 = Math.max(max1, pre1);
        			pre2 = 1;
        		}
        		else if(A[i] > A[i-1]){
        			pre1 = 1;
        			++pre2;
        			max2 = Math.max(max2, pre2);
        		}else {
        			pre1 = 1;
        			pre2 = 1;
        		}
        	}
        	flag = !flag; 
        }
        return Math.max(max1, max2);
    }
}
